// 1.别名可以类型更广泛  接口大多只针对 对象
type MyNumber = number
type IdType = string | number

// 2. 接口只能声明一次 不允许两个相同名称的存在
type PointType = {
    x: number,
    y: number,
}

// type PointType = {
//     z?:number
// }

interface IPoint {
    x: number;
    y: number
}

interface IPoint {
    z: number
}

const point: IPoint = {
    x: 1,
    y: 2,
    // z  必须需要
    z: 0
}

// 3. interface 支持继承
interface IPerson {
    name: string;
    age: number
}

interface IKun extends IPerson {
    dance?: string,
    sing: "只因你太美",
    kouhao: string
}

const ikun: IKun = {
    sing: "只因你太美",
    kouhao: "哎哟 你干嘛",
    name: '蔡徐坤',
    age: 0,
    dance: "鸡你太美"
}

// 总结 非对象类型 选择 type  对象类型 -> interface
export { }